// -*- coding: utf-8 -*-
frappe.ui.form.on('Scrap Material', {
    refresh: function(frm) {
        // 添加查看历史记录按钮
        frm.add_custom_button(__('查看历史记录'), function() {
            frappe.set_route('List', 'Comment', {
                'reference_doctype': frm.doctype,
                'reference_name': frm.docname
            });
        });
        
        // 添加打印标签按钮
        frm.add_custom_button(__('打印标签'), function() {
            print_scrap_label(frm);
        });
        
        // 根据状态显示不同按钮
        if (frm.doc.status === '可用') {
            frm.add_custom_button(__('标记为已使用'), function() {
                frm.set_value('status', '已使用');
                frm.save();
            });
        }
        
        if (frm.doc.status === '可用' || frm.doc.status === '待切割') {
            frm.add_custom_button(__('标记为已切割'), function() {
                frm.set_value('status', '已切割');
                frm.save();
            });
        }
        
        if (frm.doc.status === '异常' || frm.doc.status === '锁定') {
            frm.add_custom_button(__('恢复可用'), function() {
                frm.set_value('status', '可用');
                frm.save();
            });
        }
    },
    
    warehouse: function(frm) {
        // 当仓库改变时，清空库位
        if (frm.doc.warehouse) {
            frappe.call({
                method: 'frappe.client.get_value',
                args: {
                    doctype: 'Scrap Warehouse',
                    filters: {name: frm.doc.warehouse},
                    fieldname: 'status'
                },
                callback: function(r) {
                    if (r.message && r.message.status !== '启用') {
                        frappe.msgprint(__('所选仓库未启用，请选择其他仓库'));
                        frm.set_value('warehouse', '');
                    }
                }
            });
        }
        frm.set_value('location', '');
    },
    
    location: function(frm) {
        // 当库位改变时，验证库位是否属于当前仓库
        if (frm.doc.location && frm.doc.warehouse) {
            frappe.call({
                method: 'frappe.client.get_value',
                args: {
                    doctype: 'Scrap Location',
                    filters: {name: frm.doc.location},
                    fieldname: ['warehouse', 'status']
                },
                callback: function(r) {
                    if (r.message) {
                        if (r.message.warehouse !== frm.doc.warehouse) {
                            frappe.msgprint(__('所选库位不属于当前仓库，请重新选择'));
                            frm.set_value('location', '');
                        } else if (r.message.status !== '启用') {
                            frappe.msgprint(__('所选库位未启用，请选择其他库位'));
                            frm.set_value('location', '');
                        }
                    }
                }
            });
        }
    },
    
    status: function(frm) {
        // 状态变更提醒
        if (frm.doc.status === '已报废') {
            frappe.confirm(
                '确定要将此余料标记为已报废吗？报废后不可恢复。',
                function() {
                    // 确认报废
                    frm.save();
                },
                function() {
                    // 取消报废，恢复原状态
                    frm.set_value('status', frm.doc.__last_status || '可用');
                }
            );
        }
    },
    
    scrap_id: function(frm) {
        // 余料编号格式化为大写
        if (frm.doc.scrap_id) {
            frm.set_value('scrap_id', frm.doc.scrap_id.toUpperCase());
        }
    },
    
    onload: function(frm) {
        // 保存原始状态，用于取消操作
        frm.doc.__last_status = frm.doc.status;
    }
});

// 打印余料标签函数
function print_scrap_label(frm) {
    // 创建标签内容
    let label_content = `
    <div style="width: 100px; height: 80px; border: 1px solid #000; padding: 5px; font-family: Arial, sans-serif; font-size: 10px;">
        <div style="text-align: center; font-weight: bold;">余料标签</div>
        <div>编号: ${frm.doc.scrap_id}</div>
        <div>类型: ${frm.doc.material_type}</div>
        <div>名称: ${frm.doc.material_name}</div>
        <div>花色: ${frm.doc.color_pattern}</div>
        <div>尺寸: ${frm.doc.length}x${frm.doc.width}x${frm.doc.thickness}</div>
        <div>数量: ${frm.doc.quantity} ${frm.doc.unit}</div>
        <div>库位: ${frm.doc.location}</div>
    </div>
    `;
    
    // 打开打印窗口
    let print_window = window.open('', '_blank');
    print_window.document.write(`
    <html>
    <head>
        <title>余料标签打印</title>
        <style>
            body { margin: 0; padding: 10px; }
            .label-container { display: flex; flex-wrap: wrap; }
            .label { margin: 5px; }
        </style>
    </head>
    <body>
        <div class="label-container">
            ${label_content}
        </div>
        <script>
            window.onload = function() {
                window.print();
                window.close();
            }
        </script>
    </body>
    </html>
    `);
}

// 库位过滤器函数
function get_location_filter(frm) {
    return {
        filters: {
            warehouse: frm.doc.warehouse,
            status: '启用'
        }
    };
}